matlab在三维空间中三点绘制圆弧

P1=[0.4,0.6,0.4];

P2=[0.48,0.63,0.52];

P3=[0.85,0.3,0.3];

P=[P1;P2;P3];

%   | x1  y1  z1 |

%P =| x2  y2  z2 |

%   | x3  y3  z3 |

P=rand(3);    % 三点的xyz坐标正好是合拼成3x3的矩阵,这里用3x3的随机矩阵测试

               % 利用随机数生成3个点的坐标

               % 实际使用中,将已知的三点坐标按上述顺序排成P矩阵既可以了

A=diff(P);     % 差分和近似导数

n=cross(A(1,:),A(2,:)); % n是三点组成的平面的法向量 由两的向量求法向向量


if all(n==0),error('not a triangle');

end                       % 如果n是0向量,表示三点共线

A=[A;n];                  % 从三点坐标很容易求得三点平面所在的方程

B=sum(diff(P.^2),2)/2;    % 而外接圆心到各点距离相等,又可以列几条方程

B=[B;dot(n,P(1,:))];      %  将方程联立可以解得圆心坐标cc 
                          %  C = dot(A,B)  C = A(1)*B(1) + A(2)*B(2) + A(3)*B(3)
                          %  每一列相乘相加
cc=(A\B)';                %  这里有个复杂的推导过程,

% 最终结果cc(1) cc(2) cc(3)就是圆心的x,y,z坐标
r=sqrt(sum((cc-P(1,:)).^2));     % 点cc到任意一点的距离都可以求出圆的半径;

C1=P(1,:)-cc;            
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值